home *** CD-ROM | disk | FTP | other *** search
/ PC Play 129 / pc play 129.iso / Demo / man2 / man2.exe / data / scripts / tank_scripts.lua < prev    next >
Encoding:
Text File  |  2006-08-31  |  5.5 KB  |  161 lines

  1.  
  2. function units_tank_setup()
  3.     units_setup(5,false,ENET_EFFECT_PS_SETUPSMOKE_SMALL,ENET_EFFECT_GEOMETRY_LIGHTTANKSHADOW)
  4. end
  5.  
  6. function units_tank_resetup()
  7.     units_setup(5,false,nil,ENET_EFFECT_GEOMETRY_LIGHTTANKSHADOW)
  8. end
  9.  
  10. function units_tank_select()
  11.     units_select(22,1)
  12. end
  13.  
  14. function units_tank_unselect()
  15.     units_unselect()
  16. end
  17.  
  18. function units_tank_selectenemy()
  19.     uniGetExecutor():addSimpleEffect(ENET_EFFECT_SELECTEDGEOMETRY_ENEMY)
  20. end
  21.  
  22. function units_tank_damaged()
  23.     uniGetExecutor():applyDamage(uniGetLife())
  24. end
  25.  
  26. function units_tank_highlight()
  27.     uniGetExecutor():addEffectWithRadius(ENET_EFFECT_GEOMETRY_HIGHLIGHT,15)
  28. end
  29.  
  30. function units_tank_explode()
  31.     units_explode_small3()
  32. end
  33.  
  34. function units_tank_move()
  35.     local unit = uniGetExecutor()
  36.     local sound = unit:play3DSound("lighttank_move.wav",1)
  37.     local steps = {}
  38.     local i = 0;
  39.     for i = 0,1 do
  40.         steps[i] = unit:getBone(ENBT_STEPEMITTER,i):addSimpleEffect(ENET_EFFECT_DYNAMICGEOMETRY_LIGHTTANKSTEPSEMITTER)
  41.         steps[i+2] = unit:getBone(ENBT_STEPEMITTER,i):addSimpleEffect(ENET_EFFECT_PS_NEWTRACKSMOKE)
  42.     end
  43.     unit:getBone(ENBT_GUNTOWER):addRotationEffect(ENET_EFFECT_ROTATE_GUNTOWERDEFAULT,MATH_PI)
  44.     waitDeath(unit:addRotationEffect(ENET_EFFECT_ROTATE_UNIT,MATH_PI * 1.0))
  45.     waitDeath(unit:addMoveEffect(ENET_EFFECT_MOVE_LINEAR,100))
  46.     sound:destroy()
  47.     unit:play3DSound("lighttank_stop.wav",0):destroy()
  48.     for i = 0,1 do
  49.         if(unit:getScale() < 1.0) then 
  50.             steps[i]:destroy()
  51.         else
  52.             steps[i]:setTransformOwner()
  53.             steps[i]:suspendedDestroy(70)
  54.         end
  55.         steps[i+2]:suspendedDestroy(1.0)
  56.     end
  57. end
  58.  
  59. function units_tank_fire()
  60.     local unit = uniGetExecutor()
  61.     local gt = unit:getBone(ENBT_GUNTOWER)
  62.     local sound = gt:play3DSound("lighttank_guntower_rotate.wav",1)
  63.     waitDeath(gt:addRotationEffect(ENET_EFFECT_ROTATE_GUNTOWERTOTARGET,MATH_PI,uniGetTarget()))
  64.     sound:stopSound()
  65.     local firespot = gt:getBone(ENBT_FIRE1)
  66.     waitDeath(gt:aimGun(0,MATH_PI / 3.0,uniGetTarget()))
  67.     --firespot:addSimpleEffect(ENET_EFFECT_PS_TANKSHOT):suspendedDestroy(1.0)
  68.     firespot:addSimpleEffect(ENET_EFFECT_PS_NEWTANKSHOT):suspendedDestroy(4.5)
  69.     firespot:addSimpleEffect(ENET_EFFECT_LIGHT_TANKSHOT):delayedDestroy(0.2)
  70.     gt:play3DSound("lighttank_cannon_fire.wav",0):destroy()
  71.     local shot = firespot:addBulletEffect(ENET_EFFECT_BULLET_TANKSHOT)
  72.     shot:executeCommand(ENC_FIRE1)
  73.     gt:gunRecoil(0,0.2,7)
  74.     pause(0.1)
  75.  
  76.     unit:addFireArrow()
  77. end
  78.  
  79. registerCommand(ENSCRIPTSET_LIGHTTANK,ENC_MOVE,"units_tank_move")
  80. registerCommand(ENSCRIPTSET_LIGHTTANK,ENC_FIRE1,"units_tank_fire")
  81. registerCommand(ENSCRIPTSET_LIGHTTANK,ENC_FIRE2,"units_tank_fire")
  82. registerCommand(ENSCRIPTSET_LIGHTTANK,ENC_SELECT,"units_tank_select")
  83. registerCommand(ENSCRIPTSET_LIGHTTANK,ENC_SELECTENEMY,"units_tank_selectenemy")
  84. registerCommand(ENSCRIPTSET_LIGHTTANK,ENC_UNSELECT,"units_tank_unselect")
  85. registerCommand(ENSCRIPTSET_LIGHTTANK,ENC_SETUP,"units_tank_setup")
  86. registerCommand(ENSCRIPTSET_LIGHTTANK,ENC_RESETUP,"units_tank_resetup")
  87. registerCommand(ENSCRIPTSET_LIGHTTANK,ENC_DAMAGED,"units_tank_damaged")
  88. registerCommand(ENSCRIPTSET_LIGHTTANK,ENC_EXPLODE,"units_tank_explode")
  89. registerCommand(ENSCRIPTSET_LIGHTTANK,ENC_HIGHLIGHT,"units_tank_highlight")
  90. registerCommand(ENSCRIPTSET_LIGHTTANK,ENC_INSIDE,"units_inside")
  91.  
  92.  
  93. -- make description of unit
  94. desc = getEffectDescriptionP(ENET_UNIT_LIGHTTANK)
  95. desc.ClassID = ENCLASS_MESHINSTANCE
  96. desc.EffectClassType = ENECT_GEOMETRY
  97. desc.FileName = "light_tank.rmd"
  98. desc.ScriptSet = ENSCRIPTSET_LIGHTTANK
  99. desc.MoveType = ENMOVE_GROUNDORIENTED
  100. desc.RenderType = ENRENDERTYPE_GEOMETRY
  101. desc.Material = ENMAT_RIGIDSKINNEDMESH
  102. desc.MaterialColors = units_materialcolors_human
  103.  
  104. -- shadow
  105. desc = getEffectDescriptionP(ENET_EFFECT_GEOMETRY_LIGHTTANKSHADOW)
  106. desc.ClassID = ENCLASS_MESHINSTANCE
  107. desc.EffectClassType = ENECT_GEOMETRY
  108. desc.FileName = "light_tank_shadow.rmd"
  109. desc.RenderType = ENRENDERTYPE_SHADOW
  110. desc.Material = ENMAT_SHADOW
  111. desc.MaterialColors = units_materialcolors_shadow
  112.  
  113. ------------------------------------------------------------------------------------------------------
  114. ------------------------ effects related to unit------------------------------------------------------
  115. ------------------------------------------------------------------------------------------------------
  116.  
  117. function bullets_tankshell_fire()
  118.     local bullet = uniGetExecutor()
  119.     bullet:setTransformOwner()
  120.     waitDeath(bullet:addMoveEffect(ENET_EFFECT_MOVE_LINEARFLY,2000,uniGetTarget()),1000)
  121.     bullet:play3DSound("lighttank_cannon_explode.wav",0):destroy()
  122.     local hit_ps = bullet:addSimpleEffect(ENET_EFFECT_PS_TANKSHOTHIT)
  123.     pause(0.2)
  124.     hit_ps:suspendedDestroy(1.0)
  125.     uniGetTarget():executeCommand(ENC_DAMAGED)
  126.     pause(1.0)
  127.     bullet:destroy()
  128. end
  129.  
  130. registerCommand(ENSCRIPTSET_BULLET_TANKSHOT,ENC_FIRE1,"bullets_tankshell_fire")
  131.  
  132. -- register new unit to logic
  133. unitDesc = logic_getUnitDescP(2)
  134. unitDesc.group = 0
  135. unitDesc.order = 1
  136. unitDesc.unit_res_id = ENET_UNIT_LIGHTTANK
  137. unitDesc.unit_icon_id = "Tank_h_small_normal.dds"
  138. unitDesc.active_id = "Tank_h_small_active.dds"
  139. unitDesc.pressed_id = "Tank_h_small_pressed.dds"
  140. unitDesc.big_icon_id = "Tank_h_big_normal.dds"
  141. unitDesc.small_icon_id = "Tank_u_stats.dds"
  142. unitDesc.HP = 5
  143. unitDesc.MP = 20
  144. unitDesc.WR = 1
  145. unitDesc.min_WR = 1
  146. unitDesc.WD = 2
  147. unitDesc.WR2 = 0
  148. unitDesc.min_WR2 = 0
  149. unitDesc.WD2 = 0
  150. unitDesc.ability = 1
  151. unitDesc.transport = 0
  152. unitDesc.value = 2
  153. unitDesc.race = 0
  154. unitDesc.fire_pause = 0.6
  155. unitDesc.move_pause = 0.5
  156. unitDesc.unit_info_scale = 0.07
  157. unitDesc.scn_name = "TANK"
  158.  
  159.  
  160.  
  161.